/**
 * 
 */
package com.junge.jedis;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;

import com.junge.utils.JacksonUtil;
import com.junge.utils.NetTools;
import com.junge.utils.StringUtil;

/**
 * 类描述 :
 * @author xiaojun.yin
 * @version 1.0
 * 2019年1月25日 下午4:00:34
 */
public class UserInfoTool {
	
	public static ConcurrentMap<String,UserInfo> userInfoMap = new ConcurrentHashMap<>();
	
	static{
		System.out.println(reloadUserInfo());
	}

	/**
	 * 方法功能描述 :
	 * @author xiaojun.yin
	 * 2019年1月27日 下午2:38:32
	 * @return
	 */
	public static List<String> getAllUserNames() {
		List<String> userNames = new ArrayList<String>();
		userNames.add("手动输入");
		for(String key:userInfoMap.keySet()){
			userNames.add(userInfoMap.get(key).getUserName()+"("+key+")");
		}
		return userNames;
	}

	/**
	 * 方法功能描述 :
	 * @author xiaojun.yin
	 * 2019年1月27日 下午3:25:01
	 * @param selectStr
	 * @return
	 */
	public static UserInfo checkOutUserInfo(String selectStr) {
		if(selectStr.indexOf("(")>-1){
			String account = selectStr.substring(selectStr.indexOf("(")+1, selectStr.indexOf(")"));
			return userInfoMap.get(account);
		}
		return null;
	}

	/**
	 * 方法功能描述 :
	 * @author xiaojun.yin
	 * 2019年1月27日 下午3:43:37
	 * @param account
	 * @return
	 */
	public static UserInfo getUserInfoByAccount(String account) {
		return userInfoMap.get(account);
	}

	/**
	 * 方法功能描述 :
	 * @author xiaojun.yin
	 * 2019年1月27日 下午4:04:39
	 * @param userInfo
	 */
	public static void insertUserInfo(UserInfo userInfo) {
		userInfoMap.put(userInfo.getAccount(), userInfo);
	}
	
	public static String reloadUserInfo() {
		BufferedReader br =null;
		try{
			userInfoMap.clear();
//			URL url = UserInfoTool.class.getResource("/info/userInfo.txt");
//			System.out.println("拿到用户信息："+System.getProperty("user.dir"));
//			File file = new  File(url.getFile());
			File file = new  File(System.getProperty("user.dir")+File.separator+"userInfo"+File.separator+"userInfo"+NetTools.getEnirName()+".txt");
			System.out.println("拿到用户信息："+file.getAbsolutePath());
			br = new BufferedReader(new InputStreamReader(new FileInputStream(file),"UTF-8"));
			String str = "";
			while ((str = br.readLine()) != null) { 
				if(null != str || !str.trim().equals("")){ 
				String[] infos = str.split(",");
				userInfoMap.put(infos[0], new UserInfo(infos[2], Integer.valueOf(infos[3]), infos[0], infos[1]));
				} 
			}
			return "已重新加载用户信息";
		}catch (Exception e) {
			return JacksonUtil.ObjectToJsonString(e);
		}finally {
			try {
				if(br != null){
					br.close();
				}
			} catch (IOException e) {
				e.printStackTrace();
			}
			if(userInfoMap.size()<1){
				userInfoMap.put("13688847392", new UserInfo("邹云龙", 11233124, "13688847392", "zyl1234"));
				userInfoMap.put("15238908120", new UserInfo("郭浩然", 11235058, "15238908120", "qwe123456"));
				userInfoMap.put("15289775101", new UserInfo("杨生政", 11235952, "15289775101", "a123456"));
				userInfoMap.put("13827408561", new UserInfo("莫春莉", 11234662, "13827408561", "1234asdf"));
				userInfoMap.put("13620970913", new UserInfo("任燚", 11235809, "13620970913", "123456abc"));
				userInfoMap.put("15817397108", new UserInfo("王鹏飞", 11235029, "15817397108", "qwert123456"));
				userInfoMap.put("18123960101", new UserInfo("黄德军", 12176, "18123960101", "a123123"));
			}
		}
		
	}

	/**
	 * 方法功能描述 :
	 * @author xiaojun.yin
	 * 2019年2月25日 下午5:59:28
	 * @param account
	 * @param userId
	 */
	public static void changUserIdInfo(String account, String userId) {
		if(StringUtil.isEmpty(userId)){
			return ;
		}
		UserInfo ui = userInfoMap.get(account);
		if(ui != null){
			ui.setAcountId(Integer.valueOf(userId));
			userInfoMap.put(account, ui);
		}
	}
	
	
	
}
